package com.comeval.logica;

import java.security.Key;

import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.spec.SecretKeySpec;
import com.comeval.modelo.Persona;
import com.comeval.persistencia.IPersonaDAO;
import java.util.List;
import javax.ejb.EJB;
import javax.ejb.Stateless;

/**
 *
 * @author DianaMarcela
 */
@Stateless
public class LogicaPersona implements LogicaPersonaLocal {

    @EJB
    private IPersonaDAO personaDAO;

    @Override
    public void registrarPersona(Persona persona) throws Exception {
        if (persona == null) {
            throw new Exception("La persona no tiene informacion");
        }
        if (persona.getDocumentonitpersona() == null) {
            throw new Exception("La persona debe tener una identificacion");
        }

        Persona objPersona = personaDAO.consultarPorCodigo(persona.getDocumentonitpersona());
        if (objPersona != null) {
            throw new Exception("La identificacion se encuentra asociada a otra persona");
        }

        personaDAO.registrarPersona(persona);
    }

    @Override
    public void modificarPersona(Persona persona) throws Exception {
        if (persona == null) {
            throw new Exception("La persona no tiene informacion");
        }
        if (persona.getDocumentonitpersona() == null) {
            throw new Exception("La persona debe tener una identificacion");
        }

        Persona objPersona = personaDAO.consultarPorCodigo(persona.getDocumentonitpersona());
        if (objPersona == null) {
            throw new Exception("La identificacion no corresponde a una persona registrada");
        }

        personaDAO.modificarPersona(persona);
    }

    @Override
    public void eliminarPersona(Persona persona) throws Exception {
        Persona objPersona = personaDAO.consultarPorCodigo(persona.getDocumentonitpersona());
        if (objPersona == null) {
            throw new Exception("La identificacion no corresponde a una persona registrada");
        }

        personaDAO.eliminarPersona(persona);
    }

    @Override
    public List<Persona> consultarPersonas() throws Exception {
        return personaDAO.consultarPersonas();
    }

    @Override
    public Persona consultarPorCodigo(String documentonitpersona) throws Exception {
        if (documentonitpersona == null) {
            throw new Exception("Por favor ingrese una identificación");
        }
        return personaDAO.consultarPorCodigo(documentonitpersona);
    }

}
